// for class based (OO) access to ped functions

#pragma once
#include <windows.h>

#include "../../ScriptHook/ScriptingTypes.h"
#include "../../ScriptHook/Scripting.h"
#include "../ScriptingTypes.h"
#include "../ScriptingEnums.h"
#include "../Log.h"
#include "GameObject.h"
#include "Vehicle.h"


namespace GTA
{

	public ref class Ped : GameObject
	{
	private:
	public:
		Ped::Ped();
		Ped::Ped(u32 handle);
		Ped::Ped(Scripting::Ped ped);

		property Scripting::Ped Base
		{
			Scripting::Ped get();
			void set(Scripting::Ped ped);
		}

		virtual property GTA::Vector3^ Ped::Coordinates
		{
			GTA::Vector3^ get() override;
			void set(GTA::Vector3^ pos) override;
		}

		virtual property f32 Heading
		{
			f32 get() override;
			void set(f32 heading) override;
		};

		property u32 Health
		{
			u32 get();
			void set(u32 health);
		};

		property GTA::eModel Model
		{
			GTA::eModel get();
			
		};

		virtual bool Exists() override;
		static bool Exists(Ped^ ped);


		GTA::Vehicle^ Ped::GetVehiclePedIsDriving();
	};
};